package com.yhd.mapper;


import com.yhd.entity.TCourse;
import com.yhd.entity.dto.BrowseRecordDto;
import com.yhd.entity.dto.CourseDto;
import com.yhd.entity.dto.UserCountDto;
import com.yhd.entity.query.BrowseRecordVO;
import com.yhd.entity.query.CourseVO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

public interface CourseMapper extends Mapper<TCourse> {


    /**
     * 获取课程列表
     * @param courseVO
     * @return
     */
    List<CourseDto> selectCourseList(CourseVO courseVO);



	List<TCourse> getActivityList(@Param("name")String name, @Param("status")Integer status, @Param("typeId")String typeId);

    /**
     * 获取课程详情
     * @param courseVO
     * @return
     */
    CourseDto selectCourseInfo(CourseVO courseVO);

    /**
     * 获取全部课程
     * @param courseVO
     * @return
     */
    List<CourseDto> selectAllCourseList(CourseVO courseVO);

    /**
     * 根据类型获取关联数
     * @param type
     * @return
     */
    Integer getOtherNumByType(@Param("type") String type,@Param("id") Integer id);

    /**
     * 根据类型获取购买数
     * @param type
     * @param id
     * @return
     */
    Integer getPayNumByType(@Param("type") String type,@Param("id") Integer id);
	
	List<UserCountDto> selectCountByUsers(@Param("userIds") List<String> userIds);
    
    List<UserCountDto> countUserAbout(@Param("userIds") List<String> userIds);

    /**
     * 获取课程用户浏览列表
     * @param browseRecordVO
     * @return
     */
    List<BrowseRecordDto> selectCourseBrowseList(BrowseRecordVO browseRecordVO);

    /**
     * 用户课程购买数
     * @param courseId
     * @param userId
     * @return
     */
    int getCoursePayNumByUser(@Param("courseId")Integer courseId, @Param("userId")String userId);

    /**
     * 获取分类课程、活动数
     * @param classifyId
     * @param courseType
     * @return
     */
    int getCourseNumByDict(@Param("classifyId")String classifyId, @Param("courseType")String courseType);

    /**
     * 通过活动id获取课程列表
     * @param courseId
     * @return
     */
    List<CourseDto> selectActityCourseList(@Param("courseId")Integer courseId);

    /**
     * 根据id查询课程详情
     * @param courseId
     * @return
     */
    List<CourseDto> selectTeam(@Param("courseId")Integer courseId);
}